iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
AI & Data

看對話學 Python 資料分析,用情境故事帶你入門系列 第 8

Day-8 學會串列的進階操作,從生手到上手(上)

  • 分享至 

  • xImage
  •  


原來串列的操作有這麼多小技巧,讓我們繼續看下去。Licnesed by Adobe Stock

串列中的數字排序

Meiko:「Jason,我把這兩個星期,都放在同一個串列裡面,可是我要怎麼知道我花最多和最少錢是多少金額啊?」

Jason:「看來,你越來越有興趣囉,這個問題很簡單,你看先前你已經用 extend 的方式,把 spendList2 和 spendList1 綁在一起了!」

spendList1=[205,350,520,240,330,180,2000]
spendList2=[180,250,450,300,220,1000,1500]
spendList1.extend(spendList2)
print (spendList1)


Jason:「但我為了接下來容易跟你解釋程式在做什麼,所以我要先把先前 spendList1 和 spendList2 綁在一起的資料指定給另外一個 list 叫做 spendListTotal。」

spendListTotal=spendList1.copy()
print (spendListTotal)


Meiko:「我發現這行跟我想的不太一樣,你先前說如果要指定特定的值,直接把數值用等號設定成某個值就好,可是這行為麼在指定串列的時候,會多了一個 .copy() 的做法?

Jason :「我主要的是要把 spendList1 複製一份給 spendListTotal 當然你要直接指定,也是可以唷!」

Jason:「那我們就來看一下你的消費吧!比如說,你剛提的問題,想要排序 過去兩週的花費。

spendListTotal=spendList1.sort()

Meiko:「帥耶,這樣看起來,我這兩週花最少錢的時候,金額是 180 元,最多的話,是2000 元。對了,那如果我想要把 2000 元放在最前面,要怎麼做?花費最高的,放在最前面可以警惕我自己。」

Jason:「你只要在 .sort() 裡面,加入 reverse=True,就可以了!」

spendListTotal=spendList1.sort(reverse=True)

Meiko:「挺方便的耶。不過 Jason,你跟我講了這些做法,有沒有更快的方法,可以知道我前兩週花費最多和最少的呀,不然我眼睛還要找第一個和最後一個,還是蠻累的。歐,對了,還有總共的花費也麻煩幫我算一下。」

Jason:「當然沒問題拉,Python 程式內建最大值max()最小值min(),還有sum(),你想要做的,都可以做得到,你把串列放到max()裡面,就可以囉!

print (max(spendListTotal))
print (min(spendListTotal))
print (sum(spendListTotal))

Meiko:「看起來沒算錯耶,而且好快就可以讓我知道總共花了多少錢!」

串列中的字母排序

Jason:「對啊,而且程式不只能夠幫你排序數字,如果你的字串裡面是英文單字,它還可以依照英文單字的第一個字母排序唷。」

Meiko:「是唷,那我可以寫下我最愛的英文歌手名字,然後程式就會幫我排列順序了嗎?有時候沒有排序過的內容,就會讓我心裡覺得很阿雜。」

Jason:「可以呀,你要不要試試看,把它們放到 singerName,再試試看用.sort() 可以做什麼?

singerName=['Taylor','Bruno','Justin','Robyn','Andra']
print (singerName)
singerName.sort()
print (singerName)

Meiko:「哇!Python 真厲害,原本我輸入的歌手名字沒有照順序,用了 .sort() 真的就按照英文字母 A-Z 去排序了。」

Jason:「對啊,我在順便教你兩個小技巧,如果你不想要變動原來的串列,你可以用

singerNameSort= sorted(singerName)

Jason:「這樣你就不會改變原本 singerName 裡面的順序囉,你之後想要用 singerName 還是可繼續用。」

Jason:「還有呀,如果你想要把串列裡面的順序反轉的話,你可以這樣用

singerName.reverse()
print (singerName)

比較一下,你原本打的內容,你會發現,’Taylor’ 是在串列中的第一個位置,使用 reverse() 之後,它就會被排到最後一個位置囉。」

Meiko:「你教的這 2 個技巧蠻厲害的,可是我現在不知道能幹嘛。」

Jason:「也是,等以後資料量大的時候,你就會常用到排序,以及反轉的功能,不用著急!」

Meiko:「對了,如果以後我喜歡的歌手名字變多了,有沒有能快一點確認某個歌手在我的 singerName 裡面啊?」

Jason:「好問題,你可以先確認歌手有沒有在串列裡面,比如說,如果你打了一個不在 singerName 裡面的名字,程式也會告訴你喲!」

print ("Tom" in singerName)

print ("Bruno" in singerName)

Jason:「像上面的例子,Tom 不在你的 singerName 中,所以印出 False,而 Bruno 在你的 singerName 中,所以印出 True。」

Meiko:「這樣蠻聰明的耶,我就不用一個個的比對!」

Jason:「然後呀,如果你想要知道,你原本把 Bruno Mars 擺在哪一個位置,你可以用 .index() 的方式,讓程式告訴你,像這樣

print (singerName.index("Bruno"))

Meiko:「那如果,我想要把某個歌手移除呢?有時候一直聽同一個人唱也是會覺得有點膩,想要換新的口味。」

Jason:「還蠻直覺的,你只要用 remove 就可以了,像這樣

singerName.remove('Justin')

Jason:「我們看一下完整的名單,當我把'Justin'移除後會變成什麼樣子?」

singerName=['Taylor','Bruno','Justin','Robyn','Andra']
singerName.remove('Justin')
print (singerName)

Jason:「你看,把原本的 singerName 串列,下面多一行 remove,就可以把特定的歌手名字拿掉囉!」

singerName.pop()
print (singerName)

Meiko:「這樣還蠻簡單的耶!.pop() 的意思,就是把最後一個名字彈開的意思嗎?」

Jason:「哈哈,如果這樣你比較容易記得話,也可以這樣想囉!」

牛刀小試

我大寶寶~拉,今天還沒把所有的list內容講完,但有沒有覺得學了很多招數來處理資料?可以自己設定不同的資料內容到串列裡面,把今天學會的技巧實際演練一次。資料可以是你的消費記錄、最喜歡的球員表現,從自己關注的內容下手,才能學得又快又好唷!

給大寶寶留言、分享、鼓勵

歡迎登入留言跟我分享你的想法唷!(登入不麻煩,點一下 FB 登入就可以留言了!)

1.喜歡這樣方式學 Python 的朋友請留言『+1』
2.如果前面的內容忘記了,趕快看一下大寶寶這一系列的看對話學 Python 資料分析,用情境故事帶你入門的列表!就能夠繼續 Happy Coding 囉!


上一篇
Day-7 想成為資料分析師?熟悉基礎串列 list 運用準沒錯!(下)
下一篇
Day-9 學會串列的進階操作,從生手到上手(下)
系列文
看對話學 Python 資料分析,用情境故事帶你入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言